package com.dragon.modules.yuegou.model.product;

import com.dragon.modules.yuegou.entity.product.LimitSalesEntity;
import com.dragon.modules.yuegou.enums.product.LimitSalesStatus;
import com.dragon.modules.yuegou.model.merchant.Merchant;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 限时折扣信息表模型类
 * 
 * @author pbuilder generated
 * @date 2019-09-24 10:22:32
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class LimitSales extends LimitSalesEntity {

	private Spu spu;

	private List<Sku> skuList;

	private String letTime;//剩余时间：小时数：分钟：秒

	private Long letSec; //剩余秒
	
	private String imgs;
	
	private String imgDescription;
	
	/** 活动售卖数量 **/
	private Integer sellNum;
	
	/** 限购数量 **/
	private Integer buyLimit;

	/** 商品规格 **/
	private List<AttrSkuRef> refList = new ArrayList<>();

	/** 商家属性 **/
	private Merchant merchant;

	private List<Merchant> merchantList;

	/** 商家属性 **/
	private String merchantNames;

	/** 商户发布-1；商圈发布-2 **/
	private Integer publishType;
	
	/** 展示开始时间 **/
	private LocalDateTime viewBeginTime;
	
	/** 展示结束时间 **/
	private LocalDateTime viewEndTime;
	
	/** 有效期（审核） 开始时间 */
	private LocalDateTime beginTime;

    /** 有效期（审核） 结束时间 */
	private LocalDateTime endTime;
	
	/** 购买 开始时间 */
	private LocalDateTime buyBeginTime;

    /** 购买 结束时间 */
	private LocalDateTime buyEndTime;

	public LocalDateTime getBuyBeginTime() {
		return buyBeginTime;
	}

	public void setBuyBeginTime(LocalDateTime buyBeginTime) {
		this.buyBeginTime = buyBeginTime;
	}

	public LocalDateTime getBuyEndTime() {
		return buyEndTime;
	}

	public void setBuyEndTime(LocalDateTime buyEndTime) {
		this.buyEndTime = buyEndTime;
	}

	public LocalDateTime getViewBeginTime() {
		return viewBeginTime;
	}

	public void setViewBeginTime(LocalDateTime viewBeginTime) {
		this.viewBeginTime = viewBeginTime;
	}

	public LocalDateTime getViewEndTime() {
		return viewEndTime;
	}

	public void setViewEndTime(LocalDateTime viewEndTime) {
		this.viewEndTime = viewEndTime;
	}

	public LocalDateTime getBeginTime() {
		return beginTime;
	}

	public void setBeginTime(LocalDateTime beginTime) {
		this.beginTime = beginTime;
	}

	public LocalDateTime getEndTime() {
		return endTime;
	}

	public void setEndTime(LocalDateTime endTime) {
		this.endTime = endTime;
	}

	public Integer getSellNum() {
		return sellNum;
	}

	public void setSellNum(Integer sellNum) {
		this.sellNum = sellNum;
	}
	
	public Integer getBuyLimit() {
		return buyLimit;
	}

	public void setBuyLimit(Integer buyLimit) {
		this.buyLimit = buyLimit;
	}

	public Integer getPublishType() {
		return publishType;
	}

	public void setPublishType(Integer publishType) {
		this.publishType = publishType;
	}

	public String getMerchantNames() {
		return merchantNames;
	}

	public void setMerchantNames(String merchantNames) {
		this.merchantNames = merchantNames;
	}

	public List<Sku> getSkuList() {
		return skuList;
	}

	public void setSkuList(List<Sku> skuList) {
		this.skuList = skuList;
	}


	public List<AttrSkuRef> getRefList() {
		return refList;
	}

	public void setRefList(List<AttrSkuRef> refList) {
		this.refList = refList;
	}

	public Merchant getMerchant() {
		return merchant;
	}

	public void setMerchant(Merchant merchant) {
		this.merchant = merchant;
	}

	public List<Merchant> getMerchantList() {
		return merchantList;
	}

	public void setMerchantList(List<Merchant> merchantList) {
		this.merchantList = merchantList;
	}

	public Spu getSpu() {
		return spu;
	}

	public void setSpu(Spu spu) {
		this.spu = spu;
	}

	public String getImgs() {
		return imgs;
	}

	public void setImgs(String imgs) {
		this.imgs = imgs;
	}

	public String getImgDescription() {
		return imgDescription;
	}

	public void setImgDescription(String imgDescription) {
		this.imgDescription = imgDescription;
	}

	/**
	 * 构造一个空限时折扣信息表模型对象
	 */
	public LimitSales(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个限时折扣信息表模型对象
	 * 
	 * @param entity 实体对象
	 */
	public LimitSales(LimitSalesEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个限时折扣信息表模型对象
	 * 
	 * @param other 其它对象
	 */
	public LimitSales(LimitSales other){
		super(other);
	}

	public String getLetTime() {
		return letTime;
	}

	public void setLetTime(String letTime) {
		this.letTime = letTime;
	}

	public Long getLetSec() {
		return letSec;
	}

	public void setLetSec(Long letSec) {
		this.letSec = letSec;
	}

	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置
	 * 
	 * @param id 
	 * @return 当前对象
	 */
    public LimitSales id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public String getTitle() {
    	return title;
    }

    /**
	 * 设置活动名称
	 * 
	 * @param title 活动名称
	 * @return 当前对象
	 */
    public LimitSales title(String title) {
    	this.title = title;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈ID
	 * 
	 * @param busdId 商圈ID
	 * @return 当前对象
	 */
    public LimitSales busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public String getMerchantId() {
    	return merchantId;
    }

    /**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 * @return 当前对象
	 */
    public LimitSales merchantId(String merchantId) {
    	this.merchantId = merchantId;
    	return this;
    }

	@Override
	public String getSpuId() {
    	return spuId;
    }

    /**
	 * 设置商品ID
	 * 
	 * @param spuId 商品ID
	 * @return 当前对象
	 */
    public LimitSales spuId(String spuId) {
    	this.spuId = spuId;
    	return this;
    }

	@Override
	public String getSkuId() {
    	return skuId;
    }

    /**
	 * 设置
	 * 
	 * @param skuId 
	 * @return 当前对象
	 */
    public LimitSales skuId(String skuId) {
    	this.skuId = skuId;
    	return this;
    }

	@Override
	public LocalDateTime getBeginDate() {
    	return beginDate;
    }

    /**
	 * 设置开始时间
	 * 
	 * @param beginDate 开始时间
	 * @return 当前对象
	 */
    public LimitSales beginDate(LocalDateTime beginDate) {
    	this.beginDate = beginDate;
    	return this;
    }

	@Override
	public LocalDateTime getEndDate() {
    	return endDate;
    }

    /**
	 * 设置结束时间
	 * 
	 * @param endDate 结束时间
	 * @return 当前对象
	 */
    public LimitSales endDate(LocalDateTime endDate) {
    	this.endDate = endDate;
    	return this;
    }

	@Override
	public BigDecimal getDiscount() {
    	return discount;
    }

    /**
	 * 设置折扣
	 * 
	 * @param discount 折扣
	 * @return 当前对象
	 */
    public LimitSales discount(BigDecimal discount) {
    	this.discount = discount;
    	return this;
    }

	@Override
	public BigDecimal getDiscountFee() {
    	return discountFee;
    }

    /**
	 * 设置折扣金额
	 * 
	 * @param discountFee 折扣金额
	 * @return 当前对象
	 */
    public LimitSales discountFee(BigDecimal discountFee) {
    	this.discountFee = discountFee;
    	return this;
    }

	@Override
	public LimitSalesStatus getStatus() {
    	return status;
    }

    /**
	 * 设置[枚举]活动状态：0-可用-NORMAL、1-禁用-DISABLE
	 * 
	 * @param status [枚举]活动状态：0-可用-NORMAL、1-禁用-DISABLE
	 * @return 当前对象
	 */
    public LimitSales status(LimitSalesStatus status) {
    	this.status = status;
    	return this;
    }

	@Override
	public String getRemarks() {
    	return remarks;
    }

    /**
	 * 设置活动说明
	 * 
	 * @param remarks 活动说明
	 * @return 当前对象
	 */
    public LimitSales remarks(String remarks) {
    	this.remarks = remarks;
    	return this;
    }

	@Override
	public String getCreatedBy() {
    	return createdBy;
    }

    /**
	 * 设置
	 * 
	 * @param createdBy 
	 * @return 当前对象
	 */
    public LimitSales createdBy(String createdBy) {
    	this.createdBy = createdBy;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置
	 * 
	 * @param createdTime 
	 * @return 当前对象
	 */
    public LimitSales createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public String getModifiedBy() {
    	return modifiedBy;
    }

    /**
	 * 设置
	 * 
	 * @param modifiedBy 
	 * @return 当前对象
	 */
    public LimitSales modifiedBy(String modifiedBy) {
    	this.modifiedBy = modifiedBy;
    	return this;
    }

	@Override
	public LocalDateTime getModifiedTime() {
    	return modifiedTime;
    }

    /**
	 * 设置
	 * 
	 * @param modifiedTime 
	 * @return 当前对象
	 */
    public LimitSales modifiedTime(LocalDateTime modifiedTime) {
    	this.modifiedTime = modifiedTime;
    	return this;
    }

	@Override
	public Boolean getDel() {
    	return del;
    }

    /**
	 * 设置
	 * 
	 * @param del 
	 * @return 当前对象
	 */
    public LimitSales del(Boolean del) {
    	this.del = del;
    	return this;
    }

	@Override
	public String getDelBy() {
    	return delBy;
    }

    /**
	 * 设置
	 * 
	 * @param delBy 
	 * @return 当前对象
	 */
    public LimitSales delBy(String delBy) {
    	this.delBy = delBy;
    	return this;
    }

	@Override
	public LocalDateTime getDelTime() {
    	return delTime;
    }

    /**
	 * 设置
	 * 
	 * @param delTime 
	 * @return 当前对象
	 */
    public LimitSales delTime(LocalDateTime delTime) {
    	this.delTime = delTime;
    	return this;
    }

}
